// 引入发送请求的promise方法
import {request} from '../../request/index'
//Page Object
Page({
    data: {
        // 左侧菜单数据
        leftMenuList: [],
        // 右侧商品数据
        rightContent: [],
        //被点击的左侧菜单
        currentIndex: 0,
        // 右侧内容区的滚动条距离顶部的距离
        scrollTop: 0
    },
    // 接口的返回数据
    Cates: [],

    //options(Object)
    onLoad: function(options){
        /* 处理数据缓存： 
        1.先判断本地存储中有没有旧数据；
        2.如果没有就直接发送新请求；
        3.如果有旧数据且没有过期，则使用该旧数据即可
        */
        //  获取本地存储中的数据
        const Cates = wx.getStorageSync("cates");

        // 判断
        if(!Cates || (Cates&&(Date.now()-Cates.time>1000*10))){
            // 没有旧数据 或 有过期的旧数据，发送请求获取数据
            this.getCates();  
            }else{
            // 有数据且没有过期，可以使用旧数据, 将本地存储的旧数据赋值给接口数据，再重新渲染页面
                this.Cates = Cates.data;
                let leftMenuList = this.Cates.map(v => v.cat_name);
                let rightContent = this.Cates[0].children;
                this.setData({
                    leftMenuList,
                    rightContent
                })
            }
    
      
    },
    onReady: function(){
        
    },
    onShow: function(){
        
    },
    onHide: function(){

    },
    onUnload: function(){

    },
    onPullDownRefresh: function(){

    },
    onReachBottom: function(){

    },
    onShareAppMessage: function(){

    },
    onPageScroll: function(){

    },
    //item(index,pagePath,text)
    onTabItemTap:function(item){

    },

    /* 左侧菜单的点击事件
       1.将索引index赋值给currentIndex触发active点击效果
       2.将Cates[]修改为当前点击时的数据 */
    handleItemTap(e) {
        const {index} = e.currentTarget.dataset;
        let rightContent = this.Cates[index].children;
        this.setData({
            currentIndex: index,
            rightContent,
            scrollTop: 0
        })
    },

    // 获取分类数据
    async getCates() {
        try{
            const {data:res} = await request({url: '/categories'});
            this.Cates = res.message;
            // 把接口的数据存入本地存储中
            wx.setStorageSync("cates", {time:Date.now(),data:this.Cates});
            // 构造左侧的菜单数据
            let leftMenuList = this.Cates.map(v => v.cat_name);
            // 构造右侧商品数据（Catas[0]表示初始化，默认显示第一个商品列表）
            let rightContent = this.Cates[0].children;
            this.setData({
                leftMenuList,
                rightContent
            })
        }catch(e){
            console.log(e);
        }
    }

    
});